let includes = ([
    "include/common.js",
]);


let inherits = ([
    "inherit/data.js",
]);


function create() {
    return thisObject;
}


function reg(ob, msg, args) {

    let inf = msg.split(" ");
    if (inf.length < 3) {
        tellObject(ob, "输入的信息格式不对！应该是 账号 昵称 密码").to();
        inputTo(ob, reg);
        return;
    }

    let userName, passwd, userId = inf[0];

    if (os.fs.exists(`data/user/${userId}`)) {
        tellObject(ob, "账号已存在！").to();
        inputTo(ob, reg);
        return;
    }


    //设置信息
    userName = inf[1];
    passwd = inf[2];

    let user = newObj("clone/user.js");
    user.set("id", userId);
    user.set("name", userName);
    user.set("passwd", passwd);
    user.save();
    //销毁对象 放到check中处理
    destruct(user);
    tellObject(ob, "账号创建成功！").to();
    //刚刚注册的，不存在游戏里里面有玩家实体
    check(ob, `${userId} ${passwd}`);


}


function enterWorld(user, reconnect) {

    if (undefinedp(user.get("startPos")) || user.get("startPos") == "") {
        let sPos = loadObject("d/chengdu/guangchang.js");
        user.move(sPos);
        user.set("startPos", baseFileName(sPos));
    }

    if (reconnect) {
        tellObject(user, "重新连线到游戏!").to();
    } else {
        tellObject(user, "登录游戏成功!").to();
    }


}


function check(ob, msg) {

    let inf = msg.split(" ");

    if (inf.length < 2) {
        tellObject(ob, "登录指令格式 账号 密码").to();
        inputTo(ob, check);
        return;
    }
    let passwd = inf[1], userId = inf[0];

    if (!os.fs.exists(`data/user/${userId}`)) {
        //注册 这表示之后受到的消息 都由reg方法处理.... 如果要传递参数，第三个参数是数组
        tellObject(ob, "尝试登录的账号不存在，请先注册。\n格式 账号 昵称 密码").to();
        inputTo(ob, reg);
        return;
    }

    let user = findPlayer(userId);
    let reconnect = false;
    if (!objectp(user)) {
        //游戏中不存在 就new一个
        user = newObj("clone/user.js");
        user.set("id", userId);
        user.restore();
    } else {
        reconnect = true;
    }


    if (user.get("passwd") != passwd) {
        tellObject(ob, "密码不正确!").to();
        destruct(user);
        inputTo(ob, check);
        return;
    }

    confix(user, ob);
    //进入游戏
    enterWorld(user, reconnect);

}


/**
 *
 * @param ob 是网络代理
 * @returns {boolean}
 */
function logon(ob, msg) {

    tellObject(ob, "连接成功！请输入游戏账号！").to();
    inputTo(ob, check);

    return true;
}

